package cn.tedu.map;

import org.junit.Test;

import java.util.*;
/*不同类型的集合不可以添加*/
public class TestList {
    @Test
    public void test() {
        List<String> list = new ArrayList<>();
        list.add("你");
        list.add("敢");
        list.add("杀");
        list.add("我");
        list.add("的");
        list.add("马");
        list.add("   !");
        System.out.println(list);
      /*  list.clear();
        System.out.println(list);*/
        System.out.println(list.contains("我"));//判断是否包含
        System.out.println(list.equals("我"));//String与集合类型不匹配
        System.out.println(list.hashCode());//获取hashCode值
        System.out.println(list.isEmpty());//判断是否为空
        System.out.println(list.remove("我"));//移除指定元素，第一次出现的位置
        System.out.println(list.size());//获取长度
        System.out.println(Arrays.toString(list.toArray()));//将当前集合转化为数组并打印
        //list集合特有的方法
        list.add(0, "钉钉");//在指定位置添加元素
        System.out.println(list);
        System.out.println(list.get(0));//获取指定下标元素
        list.add(4, "牛马");
        System.out.println(list.lastIndexOf("牛马"));//元素左后一次出现的位置
        System.out.println(list.remove(4));//移除指定位置元素
        System.out.println(list.set(3, "张三"));//修改指定位置元素的值
        System.out.println(list);
        List<String> list1 = list.subList(0, 7);//截取指定片段 左闭右开 超过源集合长度报错
        System.out.println(list1);

        System.out.println(list.indexOf("牛马"));
        List<String> list2 = new ArrayList<String>();
        list2.add("1");
        list2.add("2");
        list2.add("3");
        list2.add("4");
        System.out.println(list.addAll(list2));
        System.out.println(list);
        System.out.println(list.addAll(0, list2));//在指定位置添加另一个集合所有元素
        System.out.println("***************************");
        System.out.println(list);
        System.out.println(list.contains(list2));//false
        System.out.println(list.containsAll(list2));//true  是否包含list2中的所有元素
        list.removeAll(list2);//移除list中所有的list2元素
        System.out.println(list);
    }
    /**
     * 进一步测试list接口
     */
    @Test
    public void test1(){
        List<String> list = new ArrayList<>();
        list.add("喜洋洋");
        list.add("懒洋洋");
        list.add("美洋洋");
        list.add("沸洋洋");
        list.add("小肥洋");
        list.add("红太阳");
        ArrayList<Integer> integers = new ArrayList<>();
        integers.add(100);
      /*  list.add(integers);*/
        /*集合迭代
        * 1.for循环
        * 2.增强for循环
        * 3.iterator
        * listIterator*/
        //for循环
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i));
        }
        System.out.println();
        //加强for循环
        for (String a:list) {
            System.out.print(a);
        }
        System.out.println();
        //Collection接口迭代器
        Iterator<String> iterator1 = list.iterator();
        while (iterator1.hasNext()){
            System.out.print(iterator1.next());
        }
        System.out.println();
        //ArrayList集合本身迭代器
        /*ListIterator是Iterator子接口，拥有逆向遍历的特有功能*/
        ListIterator<String> stringListIterator = list.listIterator();
        while (stringListIterator.hasNext()){
            System.out.print(stringListIterator.next());
        }
    }

}
